//
//  SKStatusViewModel.swift
//  WeiboProjectYL
//
//  Created by yanli on 16/7/13.
//  Copyright © 2016年 mountainPassCell. All rights reserved.
//

import UIKit

//  处理微博模型显示的内容, 对应的视图是 首页自定义cell
class SKStatusViewModel: NSObject {
    
    //  在这里面出事显示内容的逻辑 .....
    
    
    //  转发数显示内容
    var retweetStr: String?
    //  评论数显示内容
    var commentStr: String?
    //  赞数显示内容
    var unlikeStr: String?
    //  处理转发微博内容拼接"@xx:xxxx"
    var retweetContent: String?
    
    //  会员等级图片
    var mbrankImage: UIImage?
    //  来源内容
    var sourceContent: String?
    //  认证类型等级图片
    var verifiedTypeImage: UIImage?
    
    //  考虑计算属性 - 原因是每次滚动cell的都需要跟我们的当前时间进行对比
    
    /*
    1. 把时间对象转成需要字符串
    
    如果是今年
    判断是否是今天
    判断是否是在1分钟之前
    - 刚刚
    判断是否是在1小时之前
    - xxx分钟前
    其它
    - xx小时前
    
    判断是否是昨天
    - 昨天 10:10
    其他
    - 07-10 10:10
    
    如果不是今年
    - 2015-10-29 10:10

    */
    // 计算属性 此处省略了 get { }
    var timeStr: String? {
        //  判断发布微博时间是否为nil
        guard let createAtStr = self.status?.created_at else {
            return nil
        }
        // 传 时间数据到 分类 里面去
        return NSDate.sinaDate(createAtStr).sinaDateString
        
//    代码已经抽取到NSDate+Extension
//        //  代码执行到此,发送微博时间一定有值
//        print(createAtStr)
//        //  Sat Jul 16 14:56:55 +0800 2016
//        //  1. 转换成时间对象
//        let dt = NSDateFormatter()
//        //  指定格式化方式
//        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
//        //  指定本地化信息
//        dt.locale = NSLocale(localeIdentifier: "en_US")
//        let createAtDate = dt.dateFromString(createAtStr)!
//        print(createAtDate)
//
//        //  判断年份相当
//
//        if isThisYear(createAtDate) {
//            //  判断是否是今天
//            //  日历对象
//            let calendar = NSCalendar.currentCalendar()
//            //
//            if calendar.isDateInToday(createAtDate) {
//                //  是今天
//                //  怎么计算发微博时间距离当前时间差多少秒
////                let timeinterval = abs(createAtDate.timeIntervalSinceDate(NSDate()))
////                print(timeinterval)
//                let timeinterval = abs(createAtDate.timeIntervalSinceNow)
//                if timeinterval < 60 {
//                    //  1分钟之前
//                    return "刚刚"
//                } else if timeinterval < 60 * 60 {
//                    //  秒转换成分钟
//                    let result = timeinterval / 60
//
//                    return "\(Int(result))分钟前"
//                } else {
//
//                    // 秒转换成小时
//                    let result = timeinterval / 3600
//                    return "\(Int(result))小时前"
//                }
//
//
//
//            } else if calendar.isDateInYesterday(createAtDate) {
//                //  昨天
//                dt.dateFormat = "昨天 HH:mm"
//            } else {
//                //  其他
//                dt.dateFormat = "MM-dd HH:mm"
//            }
//            
//            
//            
//            
//            
//        } else {
//            //  不是今年
//            dt.dateFormat = "yyyy-MM-dd HH:mm"
//        }
//        
//        
//        return dt.stringFromDate(createAtDate)
        
    }
    
    //  持有微博模型
    var status: SKStatus?
    
    
    init(status: SKStatus) {
        super.init()
        // 初始化持有的微博模型
        self.status = status
        
        retweetStr = handleCount(status.reposts_count, defaultTitle: "转发")
        commentStr = handleCount(status.comments_count, defaultTitle: "评论")
        unlikeStr = handleCount(status.attitudes_count, defaultTitle: "赞")
        
        //  处理转发微博内容显示
        handleRetweetContent(status)
        
        //  处理会员等级图片
        handleMBrankImage(status.user?.mbrank ?? 0)
        
        //  处理来源字符串
        handleSourceContent(status.source ?? "")
        
        //  处理认证类型等级图片
        handleVerifiedTypeImage(status.user?.verified_type ?? 0)
    }
    
    
    /**
     发布微博时间跟我们当前时间的年份进行对比,判断其是否是同一年
     
     - parameter createDate: 发送微博时间
     */
 //    private func isThisYear(createDate: NSDate) -> Bool {
 //        let dt = NSDateFormatter()
 //        dt.dateFormat = "yyyy"
 //        //  指定本地化信息
 //        dt.locale = NSLocale(localeIdentifier: "en_US")
 //        //  把时间对象转成字符串
 //        let createDateYear = dt.stringFromDate(createDate)
 //        //  把当前时间对象转成字符串
 //        let currentDateYear = dt.stringFromDate(NSDate())
 //
 //        return createDateYear == currentDateYear
 //    }
    
    
    
    
    //  处理认证类型等级图片
    private func handleVerifiedTypeImage(verifiedType: Int) {
        
        //  认证类型等级  认证类型 -1 没有认证 ，0 认证用户，2，3，5 企业认证 ， 220 达人
        switch verifiedType {
            
        case 0:
            //  认证用户
            verifiedTypeImage = UIImage(named: "avatar_vip")
        case 2,3,5:
            //  企业认证
            verifiedTypeImage = UIImage(named: "avatar_enterprise_vip")
        case 220:
            //  微博达人
            verifiedTypeImage = UIImage(named: "avatar_grassroot")
        default:
        
            verifiedTypeImage = nil
        }
    
    }
    
    //  处理来源字符串
    private func handleSourceContent(source: String) {
        // '\'进行字符串转译
        guard let range1 = source.rangeOfString("\">"), let range2 = source.rangeOfString("</") else {
            return
        }
        //  代码执行到此,范围一定存在
        
        //  开始光标的位置
        let startIndex = range1.endIndex
        //  结束光标的位置
        let endIndex = range2.startIndex
        //  截取字符串
        sourceContent = "来自 " + source.substringWithRange(startIndex..<endIndex)
        
    }
    
    
    //  处理会员等级图片
    private func handleMBrankImage(mbrank: Int) {
        
        if mbrank >= 1 && mbrank <= 6 {
            let image = UIImage(named:"common_icon_membership_level\(mbrank)")
            mbrankImage = image
        }
    }
    
    
    //  处理转发微博内容显示
    private func handleRetweetContent(status: SKStatus) {
        // 转发微博对象 不为空
        if status.retweeted_status != nil {
            
            //  获取转发用户的名字
            guard let name = status.retweeted_status?.user?.screen_name, let text = status.retweeted_status?.text else {
                return
            }
            
            //  代码执行到此name和转发微博内容一定有值
            retweetContent = "@\(name):\(text)"
        }
    }
    
    
    //  处理显示 转发, 评论, 赞的数据样式
    /*
    1. 判断count 是否 大于 0
    - 判断 count 是否大于等于10000
    - 对10000这样的数据进行格式化处理
    - 否则 - 直接显示应有的数字
    否则显示默认标题
    
    */
    private func handleCount(count: Int, defaultTitle: String) -> String {
        
        if count > 0 {
            if count >= 10000 {
                //  进行格式化处理
                let result = Float(count / 1000) / 10
                
                var resultStr = "\(result)万"
                
                if resultStr.containsString(".0") {
                    resultStr = resultStr.stringByReplacingOccurrencesOfString(".0", withString: "")
                }
                
                return resultStr
            } else {
                return "\(count)"
            }
        } else {
            return defaultTitle
        }
        
        
    }
    
    
    
    
}




